package main

/**
链表缠绕问题
链表缠绕问题，也称为链表交错合并问题，是将两个链表交错合并成一个链表的问题

该算法使用双指针的方式，不断将 l2 中的节点插入到 l1 中相邻节点的位置上，
直到 l2 被遍历完为止。如果 l1 或 l2 有一个为 nil，则直接返回另一个链表即可。
*/

type ListNode1 struct {
	Val  int
	Next *ListNode1
}

func mergeLists(l1 *ListNode1, l2 *ListNode1) *ListNode1 {

	if l1 == nil {
		return l2
	}
	if l2 == nil {
		return l1
	}
	node1 := l1
	node2 := l2
	for node1 != nil && node2 != nil {
		//tmp := node2
		//node2 = node2.Next
		//tmp.Next = node1.Next
		//node1.Next = tmp
		//node1 = node1.Next.Next
		tmp := node2
		node2 = node2.Next
		node1.Next = tmp
		node1 = node1.Next.Next
	}

	return l1
}
